#include "schulklasse.h"

void input(Person &eintrag);
int einlesen(Person klasse[]);
Person* aeltester(Person klasse[], int cnt);
void debugEingabe(Person klasse[]);
void ausgabe(Person klasse[], int cnt);

int main() {
	const int anzahl = 40;
	struct Person klasse[anzahl];
	Person *oldest;

	int cnt = einlesen(klasse);
	//debugEingabe(klasse);
	ausgabe(klasse, cnt);
	oldest = aeltester(klasse, cnt);

	cout << "Aeltester Schueler: " << endl;
	cout << oldest->vorname << " " << oldest->name << endl;
	cout << oldest->geburtsdatum.tag << "." << oldest->geburtsdatum.mon + 1 << "." << oldest->geburtsdatum.jahr << endl;

	return 0;
}

void input(Person &eintrag) {
	
	cout << "Vorname: ";
	cin >> eintrag.vorname;

	cout << "Nachname: ";
	cin >> eintrag.name;

	cout << "GeburtsTAG(01-31): ";
	cin >> eintrag.geburtsdatum.tag;

	cout << "GeburtsMONAT(1-12): ";
	int mon;
	cin >> mon;
	eintrag.geburtsdatum.mon = (enum Monat) (mon - 1);

	cout << "GeburtsJAHR(XXXX): ";
	cin >> eintrag.geburtsdatum.jahr;
}

int einlesen(Person klasse[]) {
	char control;
	int cnt = 0;

	while (cnt < 40) {
		cout << "Maedchen (q = exit, else = continue): ";
		cin >> control;
		if (control == 'q')
			break;
		else {
			input(klasse[cnt]);
			klasse[cnt].geschlecht = w;
			cnt++;
		}
	}
	while (cnt < 40) {
		cout << "Jungen (q = exit, else = continue): ";
		cin >> control;
		if (control == 'q')
			break;
		else {
			input(klasse[cnt]);
			klasse[cnt].geschlecht = m;
			cnt++;
		}
	}
	return cnt;
}

Person* aeltester(Person klasse[], int cnt) {
	Person *p = &klasse[0];		// erster schueler is auto aeltester

	for (int i = 1; i < cnt; i++) {
		if (p->geburtsdatum.jahr > klasse[i].geburtsdatum.jahr)
			*p = klasse[i];
		else if (p->geburtsdatum.mon > klasse[i].geburtsdatum.mon && (p->geburtsdatum.jahr = klasse[i].geburtsdatum.jahr))
			*p = klasse[i];
		else if (p->geburtsdatum.tag > klasse[i].geburtsdatum.tag && (p->geburtsdatum.mon = klasse[i].geburtsdatum.mon) && (p->geburtsdatum.jahr = klasse[i].geburtsdatum.jahr))
			*p = klasse[i];
	}
	return p;
}

void debugEingabe(Person klasse[]) {
	for (int i = 0; i < 20; i++) {
		klasse[i].vorname = "Janine";
		klasse[i].name = "Liebermann";
		klasse[i].geschlecht = w;
		klasse[i].geburtsdatum.tag = i + 1;
		klasse[i].geburtsdatum.mon = Jan;
		klasse[i].geburtsdatum.jahr = 1970 + (2 * i);
	}

	for (int i = 20; i < 40; i++) {
		klasse[i].vorname = "Johann";
		klasse[i].name = "Lieberfrau";
		klasse[i].geschlecht = m;
		klasse[i].geburtsdatum.tag = i - 10;
		klasse[i].geburtsdatum.mon = Jan;
		klasse[i].geburtsdatum.jahr = 1970 + (2 * i);
	}
}

void ausgabe(Person klasse[], int cnt) {
	system("cls");
	for (int i = 0; i < cnt; i++) {
		cout << "Eintrag: " << i + 1 << endl;
		cout << "Name: " << klasse[i].name << ", " << klasse[i].vorname << endl;
		switch(klasse[i].geschlecht) {case 0:cout<<"Geschlecht: maennlich"<<endl;break;case 1:cout<<"Geschlecht: weiblich"<<endl;break;}; // ugly like h311!
		cout << "Geburtstag: " << klasse[i].geburtsdatum.tag << "." << klasse[i].geburtsdatum.mon + 1 << "." << klasse[i].geburtsdatum.jahr << endl << endl;
	}
}